C++中关于一维、二维、三维动态数组的定义

本文介绍了C++中动态数组的概念,强调了在编译时无法确定长度的数组需要在运行时动态分配内存。详细讲解了一维数组的两种定义方法,包括双指针法和直接使用new操作符。并提及了一个2016年的编程真题,关于使用扫描透镜在二维矩阵中查找和清理蘑菇的问题。
摘要由CSDN通过智能技术生成

定长数组我们在这里就不讨论了,想要知道如何定义定长数组的童鞋麻烦出门直走前面左转~

一、什么是动态数组

也就是在编译时无法确定数组长度,程序在运行时需要动态分配内存空间的数组,比如需要根据输入(cin>>n)中的n来确定的数组长度。此时,你不能这样:

int arr[n];  // error: C2057: 应输入常量表达式

否则C++编译器必然会报错说len的大小不能确定,因为这种申明数组的方式默认了数组的大小需要在编译时确定;同时你也不能这样:

int arr[] = new int[n]; //error: C2440: “初始化”: 无法从“int *”转换为“int []”

编译器会说不能将int*型转为int[]型,因为用new开辟的内存空间都会返回这段内存的首地址,所以应该这样写:

int *arr = new int[n];


二、定义数组

1、定义一维数组

法1:

int *p = new int[n];
 

法2:

vector<int> arr(n,0);//若使用法二需要引入头文件 #include <vector>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值